#include "Main.h"

// 全局变量
StudentList* student_list = NULL;
CourseList* course_list = NULL;
int system_mode = MODE_FILE;

int main() {
    printf("=== 学生选课管理系统 ===\n");
    
    // 初始化系统
    initialize_system();
    
    int choice;
    do {
        display_main_menu();
        printf("请选择操作: ");
        scanf("%d", &choice);
        
        if (choice != 0) {
            handle_user_choice(choice);
        }
    } while (choice != 0);
    
    // 清理系统
    cleanup_system();
    
    printf("系统已退出，感谢使用！\n");
    return 0;
}

void display_main_menu() {
    printf("\n========== 主菜单 ==========\n");
    printf("1. 学生信息管理\n");
    printf("2. 课程信息管理\n");
    printf("3. 选课管理\n");
    printf("4. 查看所有学生\n");
    printf("5. 查看所有课程\n");
    printf("0. 退出系统\n");
    printf("============================\n");
}

int handle_user_choice(int choice) {
    switch(choice) {
        case 1:
            // 学生信息管理
            student_management_menu(student_list);
            break;
        case 2:
            // 课程信息管理  
            course_management_menu(course_list);
            break;
        case 3:
            // 选课管理
            course_selection_menu(student_list, course_list);
            break;
        case 4:
            // 查看所有学生
            display_all_students(student_list);
            break;
        case 5:
            // 查看所有课程
            display_all_courses(course_list);
            break;
        default:
            printf("无效的选择！\n");
            return -1;
    }
    return 0;
}

void initialize_system() {
    printf("初始化系统...\n");
    
    // 创建链表
    student_list = create_student_list();
    course_list = create_course_list();
    
    // 根据编译模式加载数据
    #ifdef KEYBOARD_INPUT
        system_mode = MODE_KEYBOARD;
        printf("系统模式: 键盘输入\n");
    #else
        system_mode = MODE_FILE;
        printf("系统模式: 文件输入\n");
        load_initial_data(student_list, course_list);
    #endif
}

void cleanup_system() {
    printf("清理系统资源...\n");
    
    // 保存数据到文件
    if (system_mode == MODE_FILE) {
        save_all_data(student_list, course_list);
    }
    
    // 释放内存
    free_student_list(student_list);
    free_course_list(course_list);
}
